import pytest

#init_data(fixture_value)函数里传入的fixture_value,其实就是fixture函数里的params=[1, 2, 3]。
#return出来的则是这个参数对应的id，分别是"未销售"、"销售中"、"已售罄"，那么我就可以通过pytest命令 加上 -k来指定要运行的case。
#
def init_data(fixture_value):
    if fixture_value == 1:
        return "unsold"
    elif fixture_value == 2:
        return "onSale"
    elif fixture_value == 3:
        return "sellOut"

#my_method这个fixture去进行case执行之前的测试数据处理。
#params=[1,2,3]就是相当于我接口请求体里查询不同状态商品的数据对应的参数，1-unsold、2-onSale、3-sellOut。
#把init_data()函数赋值给了ids。
@pytest.fixture(params=[1, 2, 3], ids=init_data)
def my_method(request):
    req_param = request.param
    print("\n参数为：【{}】,执行sql--插入【{}】状态的数据".format(req_param, req_param)) #1

    ###yield用来在执行完用例之后清理数据操作
    yield req_param  #2 return req_param 并暂停
    print("\n执行sql--清理参数为【{}】的测试数据".format(req_param)) #4
    print("\n----------------------------------------")#5


def test_01(my_method):
    print("\n正在执行【{}】的case--".format(my_method)) #3



###用-k来指定执行的case :id是"onSale"的case：
if __name__ == '__main__':
    pytest.main(['-s', '-v', '-k', "1"])

